Understanding urban forest traits and cooling impact using ECOSTRESS in Boulder, Colorado: an exploratory analysis¶
Introduction
Urban forests are a critical civic asset that have immense aesthetic and cultural value (Barona 2015), improve human psychological well-being (Turner-Skoff and Cavender 2019), support urban biodiversity (Alvey 2006), regulate stormwater (Rahman et al. 2023), improve air quality (Barwise and Kumar 2020), and store carbon (Fargione et al. 2018). In addition to these benefits, trees and other vegetation in cities significantly reduce urban air and surface temperatures (Bowler et al. 2010; Ren et al. 2018; Yan et al. 2019; Yin et al. 2023) by providing shade and via transpiration (uptake and evaporation of water by plants). Due to the cooling benefits of urban vegetation, expanding a city’s urban tree canopy through tree planting has been proposed as a nature-based solution to provide “cool refugia” (Crum and Jenerette 2017) to mitigate the effects of climate change-induced increases the magnitude and frequency of urban heat waves (Russo et al. 2014).
However, we still do not have a detailed understanding of what properties of urban vegetation are associated with maximal cooling influence. One factor in particular that is understudied is the role of urban forest species composition and species traits, which are measurable properties of plants related to processes such as water, light, and nutrient use (Farrell et al. 2022; Rahman et al. 2024). To address this gap, my research goal is to understand what tree species traits are associated with optimizing the cooling provided by urban vegetation. I hope to answer this question using a field-based approach, and a remote sensing approach which is described here.
To understand how tree species composition and traits of the urban forest influence cooling, I plan to conduct a study of how species traits, tree density, and canopy cover are related to remotely-sensed estimates of evapotranspiration. In this notebook, I conducted a preliminary analysis of the effect of tree density on evapotranspiration derived from NASA’s ECOSTRESS instrument aboard the International Space Station. I focus this analysis on the city of Boulder, Colorado, who I am partnering with in this work.
Boulder is unique in having a well-established urban forestry program that uses state-of-the-art technology, data collection, and data sharing. Nestled in the foothills of the Front Range of the Rocky Mountains in the U.S. state of Colorado, Boulder has a semi-arid climate with warm summers that make the city vulnerable to extreme heat. The city has a fairly extensive urban tree canopy and is a leader in urban forestry, being named a Tree City USA by the National Arbor Day Foundation since 1984 (Wikipedia contributors 2023). In 2018, the City of Boulder released the Urban Forest Strategic Plan and in 2023, the City issued a State of the Urban Forest Report. The Strategic Plan outlines a goal to maintain the city's tree canopy at 16% (a no-net-loss goal) given ongoing declines in the tree canopy due to the emerald ash borer. Part of this strategy to maintain canopy cover is tree planting. However, we know little about what tree species provide the most cooling in Boulder. Fortunately, data from the city’s tree inventory and ECOSTRESS may provide some insights into how the structure and composition of Boulder’s urban forest influences transpiration, which is one of the mechanisms by which trees cool the urban environment.
data species_list.csv city_boundary.geojson example.log ecostress-evapotranspiration parks.geojson ecostress_combined.nc public_trees.geojson
Data sources¶
Overview of Tree Inventory Data
In 2015, the City of Boulder completed the most recent tree inventory with data that is publicly-available. The inventory included around 50,000 trees that are within the city’s responsibility area. In addition to tree species and diameter measurements, data about each tree’s planting area (e.g., curbside, metal grated pit, etc.) and disease metrics (City of Boulder Urban Forest Strategic Plan 2018). This dataset provides an estimate of the species composition of trees in the city.
However it is important to note that the inventory does not include all trees in the city. Notably, trees not in the public-right-of-way such as trees in backyards and natural areas within the city boundary (e.g., trees growing wild in creeks) are not included in the inventory.
Data source: City of Boulder. n.d. “Tree Inventory Open Data.” City of Boulder Open Data. Accessed May 6, 2024. https://open-data.bouldercolorado.gov/datasets/dbbae8bdb0a44d17934243b88e85ef2b_0/about.
Checking if data is downloaded... Data is already downloaded.
| OBJECTID | FACILITYID | SPECIESCD | FULLNAME | LATINNAME | GENUS | CULTIVAR | COMMONNAME | GENUSCOM | LEAFCYCLE | ... | OWNEDBY | TREEDIST | GLOBALID | PROPNAME | CONFIDENCE | DATACONF | DIVERSITYINDEX | SPECIESINDEX | OTHERINDEX | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | TREE79142 | FRPE | Fraxinus pennsylvanica | Fraxinus pennsylvanica | Fraxinus | None | Ash, Green | Ash | Deciduous | ... | City | Northeast Boulder | {511B97EE-A1CF-49D3-8EE8-6897D4ABF868} | None | None | None | None | None | None | POINT (-105.22100 40.02395) |
| 1 | 2 | TREE79143 | FRPE | Fraxinus pennsylvanica | Fraxinus pennsylvanica | Fraxinus | None | Ash, Green | Ash | Deciduous | ... | City | Northeast Boulder | {EB01B286-7B24-4A2D-ABD6-C3CAC41F34D1} | None | None | None | None | None | None | POINT (-105.22103 40.02378) |
| 2 | 3 | TREE79144 | CASP | Catalpa speciosa | Catalpa speciosa | Catalpa | None | Catalpa, Western | Catalpa | Deciduous | ... | City | Northeast Boulder | {75239CC6-6A21-4FAF-93D0-FDB3680FBC15} | None | None | None | None | None | None | POINT (-105.22109 40.02361) |
| 3 | 4 | TREE79145 | CASP | Catalpa speciosa | Catalpa speciosa | Catalpa | None | Catalpa, Western | Catalpa | Deciduous | ... | City | Northeast Boulder | {D7616678-C732-4EA5-8560-5B9B100FD520} | None | None | None | None | None | None | POINT (-105.22116 40.02349) |
| 4 | 5 | TREE79146 | FRAM | Fraxinus americana | Fraxinus americana | Fraxinus | None | Ash, White | Ash | Deciduous | ... | City | Northeast Boulder | {A21FA763-98E8-45C9-8BEE-7B7246EB70D1} | None | None | None | None | None | None | POINT (-105.22174 40.02329) |
5 rows × 30 columns
44304 None 44555 None dtype: object
| OBJECTID | FACILITYID | SPECIESCD | FULLNAME | LATINNAME | GENUS | CULTIVAR | COMMONNAME | GENUSCOM | LEAFCYCLE | ... | OWNEDBY | TREEDIST | GLOBALID | PROPNAME | CONFIDENCE | DATACONF | DIVERSITYINDEX | SPECIESINDEX | OTHERINDEX | geometry |
|---|
0 rows × 30 columns
| OBJECTID | FACILITYID | SPECIESCD | FULLNAME | LATINNAME | GENUS | CULTIVAR | COMMONNAME | GENUSCOM | LEAFCYCLE | ... | TREEDIST | GLOBALID | PROPNAME | CONFIDENCE | DATACONF | DIVERSITYINDEX | SPECIESINDEX | OTHERINDEX | geometry | LATINNAME_str |
|---|
0 rows × 31 columns
Boulder has a diversity of tree species of many different species–so many, in fact, that visualizing them all would be difficult! Instead we can visualize trees by genera. There do not seem to be any obvious patterns in genus diversity, with many genera in every part of the city. We can see that the western portion of the city seems to have a higher tree density than the northern as well as the center-eastern industrial part of the city. It appears that residential neighborhoods have more trees than commercial and industrial areas, and additionally older neighborhoods in the western part of the city have more trees.
Many of the trees in Boulder are in public parks, and a focus of my project will be understanding tree cooling effects in parks. The City of Boulder Open Data portal also has a dataset of public park which we can visualize.
Data source: City of Boulder. n.d. “Properties Managed by Parks and Recreation Polygons.” City of Boulder Open Data. Accessed May 6, 2024. https://open-data.bouldercolorado.gov/.
Data already downloaded. Loaded data.
| OBJECTID | FACILITYID | NAME | LABEL | CITYPARK | PARKTYPE | PARKREACH | SUBCOMMUNITY | DESCRIP | PROJECTS | ... | DEVELOPDT | RENOVDT | FORMERNAME | LIFECYCLE | PHOTOURL | LAST_EDITED_DATE | GLOBALID | SHAPE.STArea() | SHAPE.STLength() | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | PK26 | Hickory Community Gardens | Hickory Gardens | Park | Garden | Pocket Park | Southeast Boulder | None | None | ... | NaN | NaN | Active | https://www.flickr.com/photos/bouldercolorado/... | 1706720847000 | {3BBB5BED-7374-4CC4-AC56-EA94A6AC9714} | 3.578634e+04 | 741.986388 | POLYGON ((-105.23338 40.00175, -105.23338 40.0... | |
| 1 | 2 | PK55 | Maxwell Lake Park | Maxwell Lake Park | Park | Natural Lands | Neighborhood | North Boulder | None | None | ... | 0.000000e+00 | NaN | Active | https://www.flickr.com/photos/bouldercolorado/... | 1706720847000 | {4925F079-7D0B-49E2-BCCB-16B1F9350CB8} | 3.774509e+05 | 3849.313061 | POLYGON ((-105.28689 40.04266, -105.28711 40.0... | |
| 2 | 3 | PK59 | Boulder Reservoir Natural Area Little Dry Cree... | Little Dry Creek West | Park | Natural Lands | Unknown | Outside City | None | None | ... | NaN | NaN | Natural Area-51st | Active | None | 1706720847000 | {EE61EBEF-2EDE-49C4-AE71-21CF2D5AB3EA} | 5.261514e+06 | 11340.013261 | POLYGON ((-105.24465 40.07290, -105.23953 40.0... |
| 3 | 4 | PK52 | Lover's Hill Park | Lover's Hill Park | Park | Park | Pocket Park | Central Boulder | None | None | ... | 7.889184e+11 | 1.104538e+12 | Active | https://www.flickr.com/photos/bouldercolorado/... | 1706720847000 | {941D1A29-3BE6-44D0-AE8A-FF1FA77DA43D} | 9.406584e+03 | 517.707739 | POLYGON ((-105.26869 40.02506, -105.26866 40.0... | |
| 4 | 5 | PK407 | Boulder Creek Path Foothills to Pearl | Boulder Cr Path | Park | Path | City | East Boulder | None | None | ... | NaN | NaN | Active | https://www.flickr.com/photos/bouldercolorado/... | 1706720847000 | {68982AD1-1472-4291-83B7-EBF18B2CE756} | 1.276924e+05 | 6640.298525 | POLYGON ((-105.23476 40.02190, -105.23482 40.0... |
5 rows × 42 columns
In order to get the ECOSTRESS data we also need the City Boundary.
Data source: City of Boulder. n.d. “City of Boulder City Limits.” City of Boulder Open Data. Accessed April 18, 2024. https://open-data.bouldercolorado.gov/.
Data is already downloaded.
ECOSTRESS data
The ECOSTRESS instrument aboard the International Space Station provides multiple high resolution (70m by 70m) data products related to ECOSTRESS water and energy flows. Here I used the Canopy Transpiration product which uses input data from ECOSTRESS, MODIS, and other sources to estimate the proportion of evapotranspiration (ET) that is via vegetation canopy transpiration (Fisher 2018; Halverson et al. 2019). This is a Level 3 product and quality control (e.g., removing pixels with clouds) is already applied using data from a quality assurance layer (Halverson et al. 2019). It is important to note that the JPL evapotranspiration algorithm includes as input data the leaf area index derived from MODIS (itself derived from NDVI) (Fisher 2018) and therefore there is an inherent correlation between tree canopy and the ECOSTRESS canopy transpiration. In the future, where I plan to analyze tree traits, I will address this fact by controlling for leaf area index.
Overall, this canopy transpiration data describes how much of the water leaving the ecosystem is leaving via uptake and transpiration from vegetation (as opposed to directly evaporating from the ground). Because transpiration is related to heat loss from the Earth surface, it provides an estimate of the cooling impact of vegetation. A more rigorous analysis however should consider both the fraction of ET that is due to the vegetation canopy and the total ET to assess the magnitude of vegetation cooling impact (but is not considered in this preliminary analysis).
Data source: Hook, Simon, and Fisher, Joshua. 2019. “ECOSTRESS Evapotranspiration PT-JPL Daily L3 Global 70 m V001 [Data Set].” NASA EOSDIS Land Processes Distributed Active Archive Center. https://doi.org/10.5067/ECOSTRESS/ECO3ETPTJPL.001.
Number of ECOSTRESS images is 85. Data loaded and cached. Total bounds of ECOSTRESS imagery: (-105.30188636429178, 39.956324033926975, -105.17766195880746, 40.09505179639679) City bounds: [-105.30145091 39.95691668 -105.17809882 40.09448471]
ET varies across space, but it also varies across time. Because I am primarily interested in variation across space, I averaged ET across all the dates of data for this analysis.
<xarray.DataArray (band: 1, y: 220, x: 197)>
array([[[62.247826, 63.493183, 63.448845, ..., 51.436577, 57.916897,
61.670506],
[64.71858 , 65.16196 , 64.8582 , ..., 54.216713, 58.55236 ,
62.4789 ],
[65.99713 , 66.23787 , 64.08386 , ..., 55.194862, 59.055786,
62.616497],
...,
[47.250168, 52.30344 , 52.935104, ..., 62.12771 , 63.159237,
63.377098],
[46.428974, 49.705494, 49.279408, ..., 65.03614 , 62.176846,
59.600056],
[46.832283, 45.816303, 48.20122 , ..., 67.945465, 65.87038 ,
65.773506]]], dtype=float32)
Coordinates:
* band (band) int64 1
spatial_ref int64 0
* x (x) float64 -105.3 -105.3 -105.3 ... -105.2 -105.2 -105.2
* y (y) float64 40.09 40.09 40.09 40.09 ... 39.96 39.96 39.96 39.96Interactive ECOSTRESS Evapotranspiration map¶
Compare urban forest structure to ET¶
| ET | geometry | |
|---|---|---|
| 0 | 62.247826 | POLYGON ((-105.30189 40.09505, -105.30189 40.0... |
| 1 | 63.493183 | POLYGON ((-105.30126 40.09505, -105.30126 40.0... |
| 2 | 63.448845 | POLYGON ((-105.30063 40.09505, -105.30063 40.0... |
| 3 | 62.053909 | POLYGON ((-105.29999 40.09505, -105.29999 40.0... |
| 4 | 59.768463 | POLYGON ((-105.29936 40.09505, -105.29936 40.0... |
| pixel_index | ET | geometry | num_trees | |
|---|---|---|---|---|
| 0 | 0 | 62.247826 | POLYGON ((-105.30189 40.09505, -105.30189 40.0... | NaN |
| 1 | 1 | 63.493183 | POLYGON ((-105.30126 40.09505, -105.30126 40.0... | NaN |
| 2 | 2 | 63.448845 | POLYGON ((-105.30063 40.09505, -105.30063 40.0... | NaN |
| 3 | 3 | 62.053909 | POLYGON ((-105.29999 40.09505, -105.29999 40.0... | NaN |
| 4 | 4 | 59.768463 | POLYGON ((-105.29936 40.09505, -105.29936 40.0... | NaN |
Figure 1¶
Finally, what patterns do we see with tree density and canopy transpiration fraction of ET (a proxy for vegetation cooling effects)? Even if we only look at ECOSTRESS pixels with more than 10 trees (i.e., remove pixels in areas with poor inventory coverage), Figure 1 shows that tree density, the number of trees is not a good predictor of canopy ET. In fact, there are many pixels with very few inventoried trees but high canopy ET. This result is likely due to the fact that the public tree inventory does not include all trees in Boulder. Therefore, some ECOSTRESS pixels may have high canopy ET due to having high canopy cover, but because the trees providing this canopy cover are not inventoried, this analysis shows no relationship.
To address this issue, I hope to use a more updated public tree inventory (yet to be released) to calculate species composition metrics and incorporate NAIP data to identify clusters of trees, and then use these data products in my analysis. This approach will treat inventoried trees as representative samples of "clusters" of trees which can then be analyzed.
Figure 2¶
Finally, what spatial patterns do we see with tree density and canopy transpiration fraction of ET (a proxy for vegetation cooling effects)? From the map, it is clear that most ECOSTRESS pixels have very few trees. Therefore to test whether urban forest characteristics are associated with canopy transpiration using this public tree inventory dataset, it is necessary to aggregrate ECOSTRESS pixels (bin the data) to capture more trees in each spatial replicate. There are likely multiple different approaches to aggregating the ECOSTRESS pixels. For example, we can combine some number of adjacent pixels into pixel clusters and analyze the clusters in relation to the respective ECOSTRESS data.